package com.ruoyi.project.mahjong.mapper;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import com.ruoyi.project.mahjong.domain.TMember;
import com.ruoyi.project.mahjong.domain.vo.MemberCountVo;
import com.ruoyi.project.mahjong.domain.vo.MemberIntegralVo;
import io.swagger.models.auth.In;
import org.apache.ibatis.annotations.Param;

/**
 * 会员管理Mapper接口
 *
 * @author ruoyi
 * @date 2023-07-18
 */
public interface TMemberMapper
{
    /**
     * 查询会员管理
     *
     * @param id 会员管理ID
     * @return 会员管理
     */
    TMember selectTMemberById(Long id);

    /**
     * 查询会员管理列表
     *
     * @param tMember 会员管理
     * @return 会员管理集合
     */
    public List<TMember> selectTMemberList(TMember tMember);

    /**
     * 新增会员管理
     *
     * @param tMember 会员管理
     * @return 结果
     */
    public int insertTMember(TMember tMember);

    /**
     * 修改会员管理
     *
     * @param tMember 会员管理
     * @return 结果
     */
    public int updateTMember(TMember tMember);

    /**
     * 删除会员管理
     *
     * @param id 会员管理ID
     * @return 结果
     */
    public int deleteTMemberById(Long id);

    /**
     * 批量删除会员管理
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteTMemberByIds(Long[] ids);

    List<TMember> recommend(@Param("qs") TMember member,@Param("regx") String reg);

    Integer updateTMemberByid(Long id);

    Integer rollbackMember(Long id);

    List<TMember> selectTMemberByShopIdAndTableId(@Param("shopId") String shopId,@Param("tableId")  Long tableId);

    List<TMember> selectTMemberByShopId(Long shopId);

    Integer updateTMemberIntegralList(ArrayList<Long> memberId, Long addIntergral);

    Integer updateTMemberIntegral(TMember tMember);

    List<TMember> selectNoOpenTableTMemberList(Long shopId);

    Integer updateMemberTableIng(@Param("shopId") Long shopId,@Param("list") List<Long> list);

    /**
     * 结束开桌后修改会员余额和
     * @param tMember
     * @return
     */
    Integer updateMemberMoneyAndIntergralAndRecord(TMember tMember);

    List<String> selectTMembersByIdList(List<Long> list);

    MemberCountVo selectTMemCountberById(Long shopId);

    String selectToDayAdd(Long shopId);

    Integer updateTMemberRefund(TMember tMember);

    List<MemberIntegralVo> selectMemberIntegral(@Param("shopId") Long shopId,
                                                @Param("id")Long id,
                                                @Param("startTime") String startTime,
                                                @Param("endTime") String endTime);

    Integer updateTMemberProductCostMoney(@Param("costMoney")BigDecimal costMoney,
                                          @Param("memberId")Long memberId,
                                          @Param("intergral")int intergral);

    List<TMember> selectMemberByLikeName(@Param("name")String name,@Param("shopId") Long shopId);

    Integer updateGiveMoney(@Param("money")String money, @Param("id")String id);

    Double sendMoney(@Param("shopId")Long shopId);

    Double storedMoney(@Param("shopId")Long shopId);
}
